import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
import { regionComponentPlugin } from "./build/vite-plugin-region-component.js";
import { regionPlugin } from "./build/vite-plugin-region.js";

// https://vite.dev/config/
export default defineConfig(({ command, mode }) => {
  // 根据模式加载对应的环境变量
  const env = loadEnv(mode, process.cwd(), "");

  return {
    plugins: [
      // 条件编译插件 - 必须在 Vue 插件之前运行，处理原始代码
      regionPlugin({
        defaultRegion: "cn",
        supportedRegions: ["cn", "jp", "us"],
      }),
      // 组件路径转换插件 - 也必须在 Vue 插件之前运行，预处理组件路径
      regionComponentPlugin({
        defaultRegion: "cn",
        supportedRegions: ["cn", "jp", "us"],
      }),
      vue(),
    ],

    // 定义全局常量，在构建时会被替换
    define: {
      __REGION__: JSON.stringify(env.VITE_REGION || "cn"),
    },

    // 构建优化
    build: {
      rollupOptions: {
        output: {
          // 根据地区设置输出目录
          dir: `dist/${env.VITE_REGION || "cn"}`,
        },
      },
    },
    resolve: {
      alias: {
        "@": path.resolve(__dirname, "src"),
      },
    },
  };
});
